#include "../header.h"


int main(int argc, char const *argv[])
{
    
    //1.申请文件锁
    struct flock lock = {0};
    //2.初始化文件锁 
    lock.l_type = F_WRLCK; //不允许其他任务 写 我们正在操作的文件。
    lock.l_whence = SEEK_SET ; //定位文件开头为锁定位置
    lock.l_start = 0 ;  //文件读写指针的位置
    lock.l_len = 0 ;  //整个文件
    //当前任务的任务号
    lock.l_pid = getpid();

    //3.打开文件 fd  数据文件
    int fd = open("hello.txt",O_RDWR|O_TRUNC);
    //4 给 fd 上锁
    while(fcntl(fd,F_SETLK,&lock))
    {
        printf("文件锁设定失败！\n");
        sleep(1);
    }
        printf("文件锁设定成功!\n");
    //5 读写fd所对应的文件------在读写的过程中，其他任务能不能访问这个文件？ 不能。
    int num = 10;
    //10秒钟之内，代表任务占用此文件。
    char *str = "12345678\n" ; 
    while(1)
    {
        write(STDOUT_FILENO,str,strlen(str));
        write(fd,str,strlen(str));
        sleep(1);
    }

    //6 解锁
    lock.l_type = F_UNLCK;
    if (!fcntl(fd,F_SETLK,&lock.l_type))
    {
        printf("解锁成功!\n");
    }
    else
        printf("解锁失败！\n");
 
    //7 关闭文件
    close(fd);
    
    return 0;
}
